package com.itany.corejava.code17_设计模式.静态代理;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 石小俊
 * @date 2023年06月02日 15:17
 * 代理类,对目标方法做一些额外处理,但是这些处理不允许改变原有结果
 */
public class UserServiceProxy implements UserService {

    private UserService userService = new UserServiceImpl();

    @Override
    public String register(String username, String password, String phone, String address) {
        System.out.println("静态代理:在" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()) + "即将执行register方法");
        // 执行目标方法
        String result = userService.register(username, password, phone, address);
        System.out.println("在" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()) + "成功执行register方法,方法返回值为:" + result);
        // 对于代理方法而言,不允许改变原有目标方法的结果
        // 因此,其返回值即为目标方法的返回值
        return result;
    }

    @Override
    public String login(String username, String password) {
        System.out.println("静态代理:在" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()) + "即将执行login方法");
        // 执行目标方法
        String result = userService.login(username, password);
        System.out.println("在" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()) + "成功执行login方法,方法返回值为:" + result);
        // 对于代理方法而言,不允许改变原有目标方法的结果
        // 因此,其返回值即为目标方法的返回值
        return result;
    }
}
